# -*- coding: utf-8 -*-
"""
Created on Tue Feb 19 14:55:43 2013

@author: aponteeduarddo@gmail.com
Copyright Eduardo Aponte 2013.
"""

# Itereates over the binders

from mex_binder import binder_py
import disutils

mx_open_eyelink_connection = binder_py('mx_open_eyelink_connection')
mx_open_eyelink_connection.mx_c.headers = ['<eyelink.h>','"mex.h"','"utils.h"']
mx_open_eyelink_connection.bindo += ['"utils.o"']
mx_open_eyelink_connection.mx_c.code = '''

int _main( INT16 iv )
{
    return open_eyelink_connection( iv );
}


void mexFunction( int nlhs, mxArray *plhs[], int nrhs, const mxArray *prhs[] )
{
    mwSize td[2] = {1,1};
    double *status;
    /* Verify input arguments. */
    if(nrhs != 1 ) {
        mexErrMsgTxt("Incorrect number of inputs");
    } else if(nlhs>1) {
        mexErrMsgTxt("Too many output arguments.");
    }
    
    if ( isscalar(*prhs) ){
        INT16 scalar;
        int iv;
        
        /* Returns the scalar, casts to int if necessary. Returns 0 if */
        /* input is complex. */
        if (returnscalar(*prhs,&iv) != 1 ){
            mexErrMsgTxt("Complex data is not supported.");                        
        }

        plhs[0] = mxCreateNumericArray( 2, td, mxDOUBLE_CLASS, mxREAL);
        status = mxGetPr(plhs[0]);
        *status = (double ) _main( (INT16 ) iv );
        
    } else {
         mexErrMsgTxt("code should be scalar.");
    }
    return;
}

'''

mx_open_eyelink_connection.mx_c.mdoc = \
'''function [ status ] = mx_open_eyelink_connection( mode )
%MX_OPEN_EYELINK_CONNECTION Opens a connection with the eyelink.
%   Creates a connection with the eyelink used a defined ip or a default. 
%   Returns 0 is success, otherwise it failed.
%
%   MODE    Either -1,0,1. 0, opens a connection with the eye tracker, 1, 
%           will create a dummy connection for simulation; -1, initializes the library 
%           but does not open a connection.

''' 

mx_open_eyelink_connection.write_c()
mx_open_eyelink_connection.write_m()
mx_open_eyelink_connection.compile()
mx_open_eyelink_connection.write_sh()

